package caj.springboot.controller;

import caj.springboot.common.Result;
import caj.springboot.model.Paginate;
import caj.springboot.model.dto.test.TestDTO;
import caj.springboot.model.exception.BaseException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * @description: 测试接口
 * @author: CAJ
 * @time 2023/10/20 16:17
 */
@RestController
@RequestMapping("/test")
@Api(value = "测试接口", tags = {"测试接口"})
public class TestController {

    @ApiOperation("测试异常接口")
    @GetMapping("/testException")
    public Result<String> testException(){
//        int a = 10 / 0;
        if (true){
            throw new BaseException("测试异常成功");
        }
        return Result.success("测试失败");
    }

    @ApiOperation("测试校验参数，其中num必须大于0，name不能为空，password长度检验，最小为6")
    @PostMapping("/testValidParams")
    public Result<String> testValidParams(@RequestBody @Valid TestDTO dto){
        return Result.success();
    }

    @ApiOperation("测试注解和赋默认值的先后顺序,传入这个值就ok{'index': 2}")
    @PostMapping("/testDefaultAndValidOrder")
    public Result<Paginate> testDefaultAndValidOrder(@RequestBody @Valid Paginate paginate){
        // 赋默认值的过程是会发生在传值过来之前，然后@NotNull的校验过程是发生在传值过来之后的。如果传入了该属性值就会盖掉默认值。
        return Result.success("测试成功",paginate);
    }
}
